package cn.edu.gzgs.service;

import cn.edu.gzgs.entity.Dept;
import cn.edu.gzgs.exception.BusinessException;
import cn.edu.gzgs.mapper.DeptMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 自定义权限校验服务
 *
 * @author Zyf
 */
@Service("permissionService")
public class PermissionService {

    @Autowired
    private DeptMapper deptMapper;

    private static final Integer READ_ONLY_DEPT_TYPE = 100;

    /**
     * 校验当前用户是否有权操作指定ID的部门。
     * 如果部门类型为只读（如100），则不允许操作。
     *
     * @param deptId 部门ID
     * @return 如果校验通过则返回 true
     * @throws BusinessException 如果部门不存在或不允许操作
     */
    public boolean checkDeptPermission(Long deptId) {
        if (deptId == null) {
            // 对于新增操作，没有ID，直接允许
            return true;
        }
        
        Dept dept = deptMapper.selectById(deptId);
        if (dept == null) {
            throw new BusinessException("操作的部门不存在");
        }

        if (READ_ONLY_DEPT_TYPE.equals(dept.getType())) {
            // 这里可以抛出更具体的权限异常，但为了简单起见，使用 BusinessException
            throw new BusinessException("该部门为只读类型，不允许修改或删除");
        }

        return true;
    }
} 